/**
 * Copyright (c) 2016 Lenovo Group
 * All Rights Reserved.
 * 
 * Project Name:lmrp-api
 * Create Time: 2016年1月25日 下午10:35:02
 */
package com.lenovo.lmrp.api.assigntrace;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;

import com.lenovo.lmrp.api.model.RestResponse;
import com.lenovo.lmrp.api.model.view.ConfigVO;
import com.lenovo.lmrp.api.model.view.ItsmRoutersConfig;
import com.lenovo.lmrp.api.model.view.ItsmVO;

/**
 * @author songyz
 *
 */
public interface IItsmConfig {

	/**
	 * Query system configuration parameters 查询系统配置参数
	 * 
	 * @param category
	 * @param code
	 * @return
	 */
	@GET
	@Path("/config/params?")
	public RestResponse<ConfigVO> queryConfig(@QueryParam("category") String category,
											  @QueryParam("code") String code);
	
	/**
	 * Query list work order system 查询注册在平台上的工单系统
	 *  
	 * @return
	 */
	@GET
	@Path("/config/itsms")
	public RestResponse<List<ItsmVO>> queryItsmsList();
	
	
	/**
	 * Query registered on the platform of detailed work order system
	 * 查询注册在平台上的工单系统明细
	 * 
	 * @param itsmcode
	 *            工单系统标识
	 * @return
	 */
	@GET
	@Path("/config/itsms/{itsmcode}")
	public RestResponse<ItsmVO> queryItsmsList(@PathParam("itsmcode") String itsmcode);
	
	/**
	 * registration work order system
	 * 注册工单系统
	 * 
	 * @param itsmVO
	 * @return
	 */
	@POST
	@Path("/config/itsms/")
	public void registItsm(ItsmVO itsmVO);
	
	/**
	 * Delete the registration work order system 
	 * 删除注册在平台上的工单系统，与改工单系统相关联的数据都会被删除，如元数据，工作流，工单事件，工单附件等。
	 * 
	 * @param itsmcode
	 */
	@DELETE
	@Path("/config/itsms/{itsmcode}")
	public void deleteItsm(@PathParam("itsmcode") String itsmcode);
	
	/**
	 * modify the work order system configuration
	 * 修改工单系统的属性和连接配置参数
	 * 
	 * @param itsmcode
	 * @param itsmVO
	 */
	@PUT
	@Path("/config/itsms/{itsmcode}")
	public void updateItsm(@PathParam("itsmcode") String itsmcode,ItsmVO itsmVO);
	
	/**
	 *  query work order routing configuration
	 *  查询工单系统间的路由配置列表
	 * 
	 * @return
	 */
	@GET
	@Path("/config/itsms/routers")
	public RestResponse<List<ItsmRoutersConfig>> getItsmRoutersConfig();
	
	/**
	 * Add processing single routing configuration
	 * 添加工单路由配置记录，如果系统已经有此配置将忽略请求
	 * 
	 * @param itsmRoutersConfig
	 * @return 工单路由ID
	 */
	@POST
	@Path("/config/itsms/routers")
	public String addItsmRoutersConfig(ItsmRoutersConfig itsmRoutersConfig);
	
	/**
	 * delete the work order routing configuration
	 * 删除路由配置记录，正在处理的路由工单不受影响。
	 * 
	 * @param routerid
	 */
	@DELETE
	@Path("/config/itsms/routers/{routerid}")
	public void deleteItsmRoutersConfig(@PathParam("routerid") String routerid);
	
	/**
	 * Modify the work order routing configuration
	 * 修改工单路由配置，正在处理的工单不受影响
	 * 
	 * @param routerid
	 * @param itsmRoutersConfig
	 */
	@PUT
	@Path("/config/itsms/routers/{routerid}")
	public void updateItsmRoutersConfig(@PathParam("routerid") String routerid,ItsmRoutersConfig itsmRoutersConfig);
	
}
